From 7b3a8a535a12bb13cb59bf4ab3f6761799088b26 Mon Sep 17 00:00:00 2001 From: LogicParrot Date: Sat, 20 Aug 2016 18:19:54 +0300 Subject: Fixed minecraft with chest destruction crash (#3335) --- src/Entities/Minecart.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Entities/Minecart.cpp b/src/Entities/Minecart.cpp index 8eda447cf..130ea955f 100644 --- a/src/Entities/Minecart.cpp +++ b/src/Entities/Minecart.cpp @@ -1206,10 +1206,19 @@ void cMinecartWithChest::OpenNewWindow() void cMinecartWithChest::Destroyed() { - GetWindow()->OwnerDestroyed(); + if (GetWindow() != nullptr) + { + GetWindow()->OwnerDestroyed(); + } cItems Pickups; m_Contents.CopyToItems(Pickups); - GetWorld()->SpawnItemPickups(Pickups, GetPosX(), GetPosY() + 1, GetPosZ(), 4); + + + // This makes the command not execute if the world is in the midst of destruction :) + GetWorld()->ScheduleTask(1, [this, &Pickups](cWorld & World) + { + World.SpawnItemPickups(Pickups, GetPosX(), GetPosY() + 1, GetPosZ(), 4); + }); } -- cgit v1.2.3